﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Input;

namespace GameHubClient.ViewModel;

/// <summary>
/// 命令的实现类
/// </summary>
public class RelayCommand :ICommand
{
    private readonly Action<object?> _execute;
    private readonly Func<object?, bool>? _canExecute;
    public RelayCommand(Action<object?> execute, Func<object?, bool>? canExecute = null) {
        _execute = execute ?? throw new ArgumentNullException(nameof(execute));
        _canExecute = canExecute;
    }
    public bool CanExecute(object? parameter) {
        return _canExecute?.Invoke(parameter) ?? true;
    }
    public void Execute(object? parameter) {
        _execute(parameter);
    }
    public event EventHandler? CanExecuteChanged;
}
